import SparkApi
import sys
import sys
import io

sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')


# 以下密钥信息从控制台获取
appid = "b6c5e24c"     # 填写控制台中获取的 APPID 信息
api_secret = "MzVjYmY2MGRlZmE1Y2UxZDkwNmU2NjVm"   # 填写控制台中获取的 APISecret 信息
api_key = "96a9766417fb5bb6d850529e44448b68"    # 填写控制台中获取的 APIKey 信息

# 用于配置大模型版本
domain = "generalv3.5"   # v3.5版本
# 云端环境的服务地址
Spark_url = "wss://spark-api.xf-yun.com/v3.5/chat"  # v3.5环境的地址

text = []  # 存储消息历史

def getText(role, content):
    """
    添加角色和消息到text列表
    """
    jsoncon = {"role": role, "content": content}
    text.append(jsoncon)
    return text

def getlength(text):
    """
    计算消息内容的总长度
    """
    length = 0
    for content in text:
        length += len(content["content"])
    return length

def checklen(text):
    """
    确保消息长度不超过限制，删除最早的消息
    """
    while getlength(text) > 8000:
        text.pop(0)
    return text

if __name__ == '__main__':
    text.clear()  # 清空历史消息

    # 获取用户输入
    Input = sys.argv[1]

    # 添加用户消息到历史
    getText("user", Input)

    # 检查消息长度，避免超限
    question = checklen(text)

    # 调用 SparkApi 的 main 函数
    SparkApi.main(appid, api_key, api_secret, Spark_url, domain, question)

    # 只输出最终答案
    print(SparkApi.answer)

